前言
在前面10幾天不時會看到void的出現,但確切這是甚麼,並沒有詳細去解釋,這裡就好好說明。
當一個方法(Method)的返回類型(Return Type)被宣告為 void,這表示該方法不會返回任何值。在這樣的方法中,如果需要提前終止方法的執行,可以使用 return
關鍵字。
return
用於中止方法的執行並返回到方法的調用點。
以下是一個使用 return關鍵字提前終止返回類型為 void 的方法的範例:
public class Program
{
static void Main(string[] args)
{
var calculator = new Calculator();
// 正常情況
calculator.PrintGrade(85); // 輸出:Grade: B
// 處理錯誤情況
calculator.PrintGrade(-10); // 輸出:Invalid score
}
}
public class Calculator
{
public void PrintGrade(int score)
{
// 檢查分數是否在有效範圍內
if (score < 0 || score > 100)
{
Console.WriteLine("Invalid score");
return; // 使用 return 關鍵字中止方法執行
}
// 根據分數計算等級
char grade;
if (score >= 90)
grade = 'A';
else if (score >= 80)
grade = 'B';
else if (score >= 70)
grade = 'C';
else if (score >= 60)
grade = 'D';
else
grade = 'F';
Console.WriteLine("Grade: " + grade);
}
}
這個例子中,我們有一個 Calculator 類別,其中包含了 PrintGrade 方法,這個方法根據給定的分數計算等級,然後把結果輸出呈現如下圖所示。
當然程式首先要做驗證,檢查分數是否在有效範圍內(0 到 100 之間)。
如果分數不在有效範圍內,就使用 Console.WriteLine 輸出 "Invalid score",接著立即使用 return 關鍵字中止方法執行。
可以看到下圖如果分數無效,就不會繼續執行計算等級的部分,提前結束方法顯示Invalid score。
當設計和閱讀程式碼時,關於是否使用單一 return 的規則有一些相關的考量。
單一 return 的優點在於它可以簡化程式碼的流程控制。
當只有一個 return 時,閱讀程式碼的人可以快速找到函數的返回點,不需要跟蹤多個可能的 return 語句,而這種使用單一入口/單一出口的控制敘述式,類似於結構化程式設計中的理念,有助於提高程式碼的可讀性。
此外,單一 return 可以幫助減少程式碼的錯誤機會,因為開發者只需要關注一個返回點,降低了錯誤發生的可能性。
然而,有些情況下,使用多個 return 可能更直觀和易於理解。
特別是當函數的邏輯分支很多時,每個分支都有自己的返回點,使用多個 return 可以讓程式碼更清晰。
最重要的是,選擇使用單一還是多個 return 應該視情況而定。關鍵是保持程式碼的一致性、可讀性和可維護性,只要確保程式碼易於理解並且能夠正確運作即可。
換方式解釋
當我們寫程式,就像在玩一個故事遊戲一樣。每個故事(或程式)都有一個開始和一個結束,就像遊戲中的關卡一樣。我們必須按照順序完成每個故事或關卡,從第一個開始,然後才能到達最後一個。
這就是結構化程式設計的概念。它告訴我們要將一個大的程式分成許多小的部分,每個部分都有一個入口(開始)和一個出口(結束),我們按照順序執行這些部分,就像通過遊戲中的不同關卡一樣。
但有時候,我們可能需要在故事中添加一些彩蛋或變化,就像在遊戲中突然出現了新的挑戰。這就是多個 return 的情況。可以使程式碼更有趣,更具變化性,但也需要更謹慎地設計,以確保程式碼保持清晰且易於理解。
總之,結構化程式設計就像玩故事遊戲一樣,按照順序完成每個故事或關卡,確保程式碼有清晰的流程,同時也能在需要時添加一些有趣的變化。
當你需要一個方法來執行某種操作,但希望該方法具有彈性,可以處理不同數量的輸入時,可以使用 C# 中的 params
關鍵字。這個技巧讓你可以設計方法,接受可變數量的參數,而不必提前知道有多少參數。
以下是一個使用 params
關鍵字的示例:
class Program
{
static void Main(string[] args)
{
var helper = new Calculator();
int sum1 = helper.Add(1, 3);
int sum2 = helper.Add(2, 5, 8);
Console.WriteLine("Sum 1: " + sum1);
Console.WriteLine("Sum 2: " + sum2);
int sum3 = helper.Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Console.WriteLine("Sum 3: " + sum3);
}
}
public class Calculator
{
public int Add(params int[] numbers)
{
int sum = 0;
foreach (int number in numbers)
{
sum += number;
}
return sum;
}
}
詳細解釋上面這段程式碼,
helper.Add(1, 3);
傳入兩個整數。helper.Add(2, 5, 8);
傳入三個整數。helper.Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
傳入十個整數。在上面的舉例可以看到,Calculator 類別的 Add 方法使用了 params 關鍵字來接受一個 int 類型的可變參數列表 numbers。在 Main 方法中,我們可以呼叫 Add 方法,並傳入不同數量的整數參數,方法會將它們加總並返回結果。
使用 params關鍵字的好處是它讓你的方法更具靈活性,可以應對不同的情況,而不需要為每種情況都創建一個不同數量參數的方法。這樣的設計可以提高代碼的可重用性和簡潔性。
Day 13挑戰完成~~